package gui;

import javax.swing.JPanel;
import java.awt.Color;
import javax.swing.JButton;
import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.FlowLayout;
import java.util.Arrays;
import java.util.List;
import javax.swing.JTextArea;
import java.awt.Font;
import javax.swing.SwingConstants;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

@SuppressWarnings("serial")
public class PanelEntrenar extends JPanel {

	/**
	 * Declara publico los botones accesibles desde el control de eventos
	 * central.
	 */
	public JButton btnEntrenar;
	public JButton btnCancelar;

	private JTextField txtNombre;
	private JTextField txtAtributo;
	private JButton btnAgregar;
	private JButton btnBorrar;
	private JTextField txtDireccion;
	private JTextArea txtrAtributos;

	/** Construye el panel donde se ingresan los datos para entrenar al adivino. */
	public PanelEntrenar() {
		setOpaque(false);
		setPreferredSize(new Dimension(822, 520));
		setForeground(Color.LIGHT_GRAY);
		setBackground(new Color(238, 238, 238));
		setLayout(null);

		ImageIcon imgPanel = new ImageIcon("img/paneles/panelPergamino.png");

		PanelImagen panel = new PanelImagen(imgPanel.getImage());
		panel.setBounds(302, 12, 485, 458);
		add(panel);
		panel.setLayout(null);

		JPanel panelBotones = new JPanel();
		FlowLayout flowLayout = (FlowLayout) panelBotones.getLayout();
		flowLayout.setHgap(20);
		panelBotones.setBounds(56, 382, 358, 48);
		panelBotones.setOpaque(false);
		panel.add(panelBotones);

		btnEntrenar = new JButton("Entrenar");
		btnEntrenar.setOpaque(false);
		btnEntrenar.setPressedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnEntrenar.setSelectedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnEntrenar.setBorder(null);
		btnEntrenar.setBorderPainted(false);
		btnEntrenar.setContentAreaFilled(false);
		btnEntrenar.setDefaultCapable(false);
		btnEntrenar.setForeground(Color.ORANGE);
		btnEntrenar.setHorizontalTextPosition(SwingConstants.CENTER);
		btnEntrenar.setIcon(new ImageIcon("img/paneles/botonGeneral.png"));
		btnEntrenar.setPreferredSize(new Dimension(100, 25));
		panelBotones.add(btnEntrenar);

		btnCancelar = new JButton("Cancelar");
		btnCancelar.setOpaque(false);
		btnCancelar.setPressedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnCancelar.setSelectedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnCancelar.setBorder(null);
		btnCancelar.setBorderPainted(false);
		btnCancelar.setContentAreaFilled(false);
		btnCancelar.setDefaultCapable(false);
		btnCancelar.setForeground(Color.ORANGE);
		btnCancelar.setHorizontalTextPosition(SwingConstants.CENTER);
		btnCancelar.setIcon(new ImageIcon("img/paneles/botonGeneral.png"));
		btnCancelar.setPreferredSize(new Dimension(100, 25));
		panelBotones.add(btnCancelar);

		JPanel panelAgregar = new JPanel();
		panelAgregar.setBounds(40, 69, 400, 301);
		panelAgregar.setOpaque(false);
		panel.add(panelAgregar);
		panelAgregar.setPreferredSize(new Dimension(550, 320));
		panelAgregar.setLayout(null);

		txtNombre = new JTextField();
		txtNombre.setPreferredSize(new Dimension(4, 20));
		txtNombre.setText("Nombre");
		txtNombre.setBounds(113, 42, 165, 20);
		panelAgregar.add(txtNombre);
		txtNombre.setColumns(10);

		JLabel lblAtributo = new JLabel("Atributo:");
		lblAtributo.setBounds(12, 72, 63, 15);
		panelAgregar.add(lblAtributo);

		JLabel lblNombre = new JLabel("Nombre:");
		lblNombre.setBounds(12, 44, 70, 15);
		panelAgregar.add(lblNombre);

		txtAtributo = new JTextField();
		txtAtributo.setText("Atributo");
		txtAtributo.setBounds(113, 70, 165, 20);
		panelAgregar.add(txtAtributo);
		txtAtributo.setColumns(10);

		btnAgregar = new JButton("Agregar");
		btnAgregar.setOpaque(false);
		btnAgregar.setPressedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnAgregar.setSelectedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnAgregar.setForeground(Color.ORANGE);
		btnAgregar.setBorder(null);
		btnAgregar.setBorderPainted(false);
		btnAgregar.setContentAreaFilled(false);
		btnAgregar.setDefaultCapable(false);
		btnAgregar.setHorizontalTextPosition(SwingConstants.CENTER);
		btnAgregar.setIcon(new ImageIcon("img/paneles/botonGeneral.png"));
		btnAgregar.setPreferredSize(new Dimension(100, 25));
		btnAgregar.setBounds(290, 67, 100, 25);
		panelAgregar.add(btnAgregar);

		btnBorrar = new JButton("Borrar");
		btnBorrar.setEnabled(false);
		btnBorrar.setOpaque(false);
		btnBorrar.setPressedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnBorrar.setSelectedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnBorrar.setForeground(Color.ORANGE);
		btnBorrar.setBorder(null);
		btnBorrar.setBorderPainted(false);
		btnBorrar.setContentAreaFilled(false);
		btnBorrar.setDefaultCapable(false);
		btnBorrar.setHorizontalTextPosition(SwingConstants.CENTER);
		btnBorrar.setIcon(new ImageIcon("img/paneles/botonGeneral.png"));
		btnBorrar.setPreferredSize(new Dimension(100, 25));
		btnBorrar.setBounds(290, 102, 100, 25);
		panelAgregar.add(btnBorrar);

		JButton btnSubir = new JButton("Subir");
		btnSubir.setEnabled(false);
		btnSubir.setPressedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnSubir.setSelectedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnSubir.setForeground(Color.ORANGE);
		btnSubir.setBorder(null);
		btnSubir.setBorderPainted(false);
		btnSubir.setContentAreaFilled(false);
		btnSubir.setDefaultCapable(false);
		btnSubir.setHorizontalTextPosition(SwingConstants.CENTER);
		btnSubir.setIcon(new ImageIcon("img/paneles/botonGeneral.png"));
		btnSubir.setPreferredSize(new Dimension(100, 25));
		btnSubir.setBounds(290, 139, 100, 25);
		panelAgregar.add(btnSubir);

		JButton btnBajar = new JButton("Bajar");
		btnBajar.setEnabled(false);
		btnBajar.setPressedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnBajar.setSelectedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnBajar.setForeground(Color.ORANGE);
		btnBajar.setBorder(null);
		btnBajar.setBorderPainted(false);
		btnBajar.setContentAreaFilled(false);
		btnBajar.setDefaultCapable(false);
		btnBajar.setHorizontalTextPosition(SwingConstants.CENTER);
		btnBajar.setIcon(new ImageIcon("img/paneles/botonGeneral.png"));
		btnBajar.setPreferredSize(new Dimension(100, 25));
		btnBajar.setBounds(290, 176, 100, 25);
		panelAgregar.add(btnBajar);

		JLabel lblImagen = new JLabel("Imagen:");
		lblImagen.setBounds(12, 17, 70, 15);
		panelAgregar.add(lblImagen);

		txtDireccion = new JTextField();
		txtDireccion.setText("Direccion");
		txtDireccion.setBounds(113, 15, 165, 20);
		panelAgregar.add(txtDireccion);
		txtDireccion.setColumns(10);

		JButton btnBuscar = new JButton("Buscar");
		btnBuscar.setOpaque(false);
		btnBuscar.setPressedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnBuscar.setSelectedIcon(new ImageIcon(
				"img/paneles/botonGeneralPresionado.png"));
		btnBuscar.setForeground(Color.ORANGE);
		btnBuscar.setBorder(null);
		btnBuscar.setBorderPainted(false);
		btnBuscar.setContentAreaFilled(false);
		btnBuscar.setDefaultCapable(false);
		btnBuscar.setHorizontalTextPosition(SwingConstants.CENTER);
		btnBuscar.setIcon(new ImageIcon("img/paneles/botonGeneral.png"));
		btnBuscar.setPreferredSize(new Dimension(100, 25));
		btnBuscar.setBounds(290, 12, 100, 25);
		panelAgregar.add(btnBuscar);

		txtrAtributos = new JTextArea();
		txtrAtributos.setEditable(false);
		txtrAtributos.setBounds(113, 99, 165, 183);
		panelAgregar.add(txtrAtributos);

		JLabel lblEnseameLoQue = new JLabel("Enseñame lo que sabes");
		lblEnseameLoQue.setFont(new Font("Dialog", Font.BOLD, 18));
		lblEnseameLoQue.setBounds(130, 35, 236, 22);
		panel.add(lblEnseameLoQue);

		crearEventosLocales();
	}

	// Crea los eventos que cargan la lista de atributos.
	private void crearEventosLocales() {
		btnAgregar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String atributo = txtAtributo.getText();
				if (!atributo.isEmpty()) {
					txtrAtributos.append(atributo + "\n");
					txtAtributo.setText("");
				}
			}
		});
		btnBorrar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				// txtrAtributos.remove(index);
			}
		});
	}

	// Asignar control de eventos
	public void setActionListener(ControlCentral e) {
		btnEntrenar.addActionListener(e);
		btnCancelar.addActionListener(e);
	}

	public String getNombre() {
		return txtNombre.getText();
	}

	/** Entrega una lista de atributos no vacia. */
	public List<String> getAtributos() {
		if (txtrAtributos.getLineCount() == 0)
			return null;
		return Arrays.asList(txtrAtributos.getText().split("\n"));
	}
}
